package com.youxue.service;

import com.youxue.entity.Pager;
import com.youxue.entity.User;

/**
 * Created by 15c on 2018/1/15.
 */
public interface UserService {
    /**
     * 通过userId查询用户所有信息
     * @param id
     * @return
     */
    User select(Integer id);

    /**
     * 通过用户email查找用户id
     * @param email
     * @return
     */
    User selectUserIdByEmail(User email);

    /**
     * 通过邮箱查询用户
     * @param email
     * @return
     */
    User showUserByEmail(String email);
    /**
     * 通过用户phone查找用户id
     * @param phone
     * @return
     */
    User selectUserIdByPhone(User phone);

    /**
     * 用户通过邮箱、电话号码注册
     * @param user
     * @return
     */
    int  addUser(User user);

    
    /**
     * 用户个人信息展示
     * @param userId
     * @return
     */
    User showUserPartInfo(Integer userId);

    /**
     * 通过邮箱重置密码
     * @param user
     * @return
     */
    int resetPasswordByemail(User user);

    /**
     * 用户修改个人资料
     * @param user
     * @return
     */
    int updateUser(User user);

    /**
     * 查询一个用户账户余额double 型
     * @param userId
     * @return
     */
    double showAUserBalance(Integer userId);

    /**
     * 充值、支付实现用户账户金额的改变
     * @param user
     * @return
     */
    int reviseAUserBalance(User user);

    /**
     * 通过用户id充值账户余额
     * @param userId
     * @param money
     * @return
     */
    int reviseBalanceByUserId(Integer userId, Double money);

    /**
     * 超级管理员 权限：2
     * 分页查询用户部分信息
     * 后台所用
     *
     * @param pageOffset 每次查询数据的开始位置
     * @return paper对象，该对象中封装了查询出来的结果
     */
    Pager<User> find(Integer pageOffset);
    /**
     * 普通管理员 权限：1
     * 分页查询用户部分信息
     * 后台所用
     *
     * @param pageOffset 每次查询数据的开始位置
     * @return paper对象，该对象中封装了查询出来的结果
     */
    Pager<User> findByCommonAdmin(Integer pageOffset);



    /**
     * 检索一个用户，此处精确检索
     * 后台所用
     * @param keyword
     * @return
     */
    User findUserByRetrieval(String keyword);

    /**
     * 查询一个用户详情
     * 后台所用
     * @param userId
     * @return
     */
    User findAUserInfo(Integer userId);
}
